package servlets;

import java.io.IOException;
import java.rmi.NotBoundException;
import java.util.List;

import javax.naming.CommunicationException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dto.CargaDTO;
import dto.ClienteDTO;
import dto.EmpresaDTO;
import dto.ParticularDTO;
import dto.SucursalDTO;
import dto.VehiculoDTO;
import businessDelegate.Delegate;

/**
 * Servlet implementation class SrvReportes
 */
 
@WebServlet(name = "SrvReportes", urlPatterns={"/SrvReportes"})
public class SrvReportes extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SrvReportes() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		if(request.getParameter("origen").contentEquals("reporteClientesParticulares")) {
			List <ParticularDTO> clientes;
			try {
				clientes = Delegate.getInstancia().getParticularList();
				//aqui deberia ir el dispatcher a la pagina que arme el reporte 
				request.setAttribute("clientes", clientes);
				request.getRequestDispatcher("jsp/ReporteClientesParticulares.jsp").forward(request, response);
				
			} catch (CommunicationException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (NotBoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			//request.getRequestDispatcher("index.jsp").forward(request, response);
		}
		
		if(request.getParameter("origen").contentEquals("reporteClientesEmpresas")) {
			List <EmpresaDTO> clientes;
			try {
				clientes = Delegate.getInstancia().getEmpresaList();
				//aqui deberia ir el dispatcher a la pagina que arme el reporte 
				request.setAttribute("clientes", clientes);
				request.getRequestDispatcher("jsp/ReporteClientesEmpresas.jsp").forward(request, response);
				
			} catch (CommunicationException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (NotBoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			//request.getRequestDispatcher("index.jsp").forward(request, response);
		}
		
		if(request.getParameter("origen").contentEquals("reporteVehiculosSinM")) {
			List <VehiculoDTO> vehiculos;
			try {
				vehiculos = Delegate.getInstancia().getVehiculosSinMantenimiento();
				//aqui deberia ir el dispatcher a la pagina que arme el reporte 
				//request.setAttribute("vehiculos", vehiculos);
				//request.getRequestDispatcher("jsp/ReporteVehiculosSinMantenimiento.jsp").forward(request, response);				
			} catch (CommunicationException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (NotBoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			request.getRequestDispatcher("index.jsp").forward(request, response);
		}	
		
		if(request.getParameter("origen").contentEquals("Sucursales")) {
			List <SucursalDTO> sucursales;
			try {
				sucursales = Delegate.getInstancia().getSucursales();
				//aqui deberia ir el dispatcher a la pagina que arme el reporte 
				request.setAttribute("sucursales", sucursales);
				request.getRequestDispatcher("jsp/ReporteSucursales.jsp").forward(request, response);				
			} catch (CommunicationException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (NotBoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			//request.getRequestDispatcher("index.jsp").forward(request, response);
		}	
		
		if(request.getParameter("origen").contentEquals("PaquetesPendientesEnvio")) {
			List <CargaDTO> paquetes;
			try {
				paquetes = Delegate.getInstancia().getCargasPendientes();
				//aqui deberia ir el dispatcher a la pagina que arme el reporte 
				//request.setAttribute("paquetes", paquetes);
				//request.getRequestDispatcher("jsp/ReportePaquetesPendientesEnvio.jsp").forward(request, response);				
			} catch (CommunicationException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (NotBoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			request.getRequestDispatcher("index.jsp").forward(request, response);
		}	
		
		if(request.getParameter("origen").contentEquals("PaquetesPendientesFacturar")) {
			String tipo = request.getParameter("tipo");
			String numero;
			if (tipo.contentEquals("particular"))
			{ 
				numero = request.getParameter("dni");
				List <CargaDTO> paquetes;
				try {
					paquetes = Delegate.getInstancia().getCargaPendienteFacturarParticular(numero);
					//aqui deberia ir el dispatcher a la pagina que arme el reporte 
					//request.setAttribute("paquetes", paquetes);
					//request.setAttribute("tipo", "particular");
					//request.setAttribute("dni", numero); 
					//request.getRequestDispatcher("jsp/ReportePaquetesPendientesFacturar.jsp").forward(request, response);				
				} catch (CommunicationException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (NotBoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}			
			if (tipo.contentEquals("empresa"))
			{ 
				numero = request.getParameter("cuit");
				List <CargaDTO> paquetes;
				try {
					paquetes = Delegate.getInstancia().getCargaPendienteFacturarEmpresa(numero);
					//aqui deberia ir el dispatcher a la pagina que arme el reporte 
					//request.setAttribute("paquetes", paquetes);
					//request.setAttribute("tipo", "empresa");
					//request.setAttribute("cuit", numero); 
					//request.getRequestDispatcher("jsp/ReportePaquetesPendientesFacturar.jsp").forward(request, response);				
				} catch (CommunicationException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (NotBoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}			
			request.getRequestDispatcher("index.jsp").forward(request, response);
		}	
		
		/*if(request.getParameter("origen").contentEquals("PagosPorCliente")) {
			List <CargaDTO> paquetes;
			try {
				paquetes = Delegate.getInstancia().getCargasPendientes();
				//aqui deberia ir el dispatcher a la pagina que arme el reporte 
				//request.setAttribute("paquetes", paquetes);
				//request.getRequestDispatcher("jsp/ReportePaquetesPendientesEnvio.jsp").forward(request, response);				
			} catch (CommunicationException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (NotBoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			request.getRequestDispatcher("index.jsp").forward(request, response);
		}*/	
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

}
